package com.yw.thesimpllestplayer.extractor;

import android.media.MediaFormat;

import java.nio.ByteBuffer;

/**
 * @ProjectName: TheSimpllestplayer
 * @Package: com.yw.thesimpllestplayer.extractor
 * @ClassName: IExtractor
 * @Description: 抽象提取器接口-->面向接口编程
 * @Author: wei.yang
 * @CreateDate: 2021/11/2 14:22
 * @UpdateUser: 更新者：wei.yang
 * @UpdateDate: 2021/11/2 14:22
 * @UpdateRemark: 更新说明：
 * @Version: 1.0
 */
public interface IExtractor {
    /**
     * 获取媒体格式
     *
     * @return
     */
    MediaFormat getFormat();

    /**
     * 读取媒体数据
     *
     * @param byteBuffer 媒体数据（音频或视频、这里仅音频被使用）
     * @return 读取的有效字节数
     */
    int readBuffer(ByteBuffer byteBuffer);

    /**
     * 获取当前帧时间
     * BaseExtractor
     * @return
     */
    long getCurrentTimestamp();

    /**
     * 获取当前帧flag
     *
     * @return
     */
    long getSampleFlag();

    /**
     * Seek到指定位置，并返回实际帧的时间戳
     *
     * @param pos
     * @return
     */
    long seek(long pos);

    /**
     * 设置开始解码时间戳
     *
     * @param pos
     */
    void setStartPos(long pos);

    /**
     * 停止读取数据
     */
    void stop();

}
